/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.apresentacao.galeria;

import byblos.apresentacao.idioma.InterceptadorIdioma;
import byblos.apresentacao.usuario.InterceptadorLogin;
import byblos.negocio.galeria.GaleriaPhotopress;
import byblos.persistencia.DAO;
import byblos.util.MultipartRequestInterceptor;
import byblos.util.Util;
import java.awt.Dimension;
import javax.servlet.http.HttpServletRequest;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Parameter;
import org.vraptor.interceptor.UploadedFileInformation;

/**
 *
 * @author marano
 */
@Component
@InterceptedBy(value = {InterceptadorIdioma.class, InterceptadorLogin.class, MultipartRequestInterceptor.class})
public class GaleriaSalvarComponent {

    @Parameter
    private int id;
    @Parameter
    private String nome;
    @Parameter
    private String nomePortugues;
    @Parameter
    private String nomeAlemao;
    @Parameter
    private String nomeFrances;
    @Parameter
    private String nomeIngles;
    @Parameter
    private String nomeEspanhol;
    @In(required = false)
    private UploadedFileInformation foto;
    @Parameter
    private String descricaoFoto;
    @In
    private HttpServletRequest request;
    @Out
    private String mensagemSucesso;
    @Out
    private String mensagemErro;

    public String salvar() {
        GaleriaPhotopress galeria;
        if (id == 0) {
            galeria = new GaleriaPhotopress();
        } else {
            galeria = new DAO().localizar(GaleriaPhotopress.class, id);
        }
        galeria.setNome(nome);
        galeria.setNomePortugues(nomePortugues);
        galeria.setNomeAlemao(nomeAlemao);
        galeria.setNomeFrances(nomeFrances);
        galeria.setNomeIngles(nomeIngles);
        galeria.setNomeEspanhol(nomeEspanhol);
        boolean adicionouImagem = false;
        boolean fotoAcima2Mb = false;
        System.out.println("foto arquivoFile " + foto);
        if (foto != null) {
            if (foto.getFile().length() > 2097152) {
                fotoAcima2Mb = true;
            } else {
            String caminhoRelativoFoto = Util.salvarArquivo(request, "galeria", foto, true, new Dimension(800, 600));
            galeria.adicionarFoto(caminhoRelativoFoto, foto.getFileName(), descricaoFoto);
            adicionouImagem = true;
            }
        }
        new DAO().salvar(galeria);
        if (fotoAcima2Mb) {
            request.getParameterMap().put("id", "" + galeria.getId());
            mensagemErro = "Arquivo superior a 2Mb. Favor escolha outro arquivo!";
            return "editar";
        }
        if (adicionouImagem) {
            request.getParameterMap().put("id", "" + galeria.getId());
            mensagemSucesso = "Arquivo salvo com sucesso!";
            return "editar";
        } else {
            mensagemSucesso = "Galeria salva com sucesso!";
            return "ok";
        }
    }
}